function Est_Freq_Offset = Function_Frequency_Offset_Est_PSSS (Rx_PSSS_Wave, NFFT, cpLenR)
    PSSS_Length = NFFT + cpLenR;
 	Est_Freq_Offset_Coarse = 0;
    Est_Freq_Offset_Fine_1 = 0;
    Est_Freq_Offset_Fine_2 = 0;
    Est_Freq_Offset = 0;
    
	Rx_PSSS_Wave(1:PSSS_Length) = Rx_PSSS_Wave(1:PSSS_Length).*exp(-2i*pi*(-cpLenR:NFFT-1)'/NFFT/2);
	Rx_PSSS_Wave(PSSS_Length+1:2*PSSS_Length) = Rx_PSSS_Wave(PSSS_Length+1:2*PSSS_Length).*exp(-2i*pi*(-cpLenR:NFFT-1)'/NFFT/2);
    
    Est_Freq_Offset_Coarse = Function_Frequency_Offset_Estimation(Rx_PSSS_Wave, PSSS_Length-cpLenR+1, cpLenR-1, cpLenR);
    [Rx_PSSS_Wave] = Function_Frequency_Offset_Compensationn(Rx_PSSS_Wave, -Est_Freq_Offset_Coarse);
    
	[Est_Freq_Offset_1] = Function_Frequency_Offset_Estimation(Rx_PSSS_Wave, 1, cpLenR-1, NFFT);
	[Est_Freq_Offset_2] = Function_Frequency_Offset_Estimation(Rx_PSSS_Wave, PSSS_Length, cpLenR-1, NFFT);
	Est_Freq_Offset_Fine_1 = (Est_Freq_Offset_1 + Est_Freq_Offset_2)/2;
	[Rx_PSSS_Wave] = Function_Frequency_Offset_Compensationn(Rx_PSSS_Wave, -Est_Freq_Offset_Fine_1);
            
	[Est_Freq_Offset_Fine_2] = Function_Frequency_Offset_Estimation(Rx_PSSS_Wave, 1, PSSS_Length-1, PSSS_Length);
% 	[Rx_PSSS_Wave] = Function_Frequency_Offset_Compensationn(Rx_PSSS_Wave, -Est_Freq_Offset_Fine_2);

	Est_Freq_Offset = Est_Freq_Offset + Est_Freq_Offset_Coarse + Est_Freq_Offset_Fine_1 + Est_Freq_Offset_Fine_2;